#include <bits/stdc++.h>
#ifndef DEBUG
#define debug
#endif
using namespace std;
using i64 = int64_t;

// b[0] = b[l] % mod
int main() {
  cin.tie(0)->sync_with_stdio(0);
  int n, m, l;
  cin >> n >> m >> l;
  vector<int> a(n);
  vector<vector<int>> b(l);
  for (int i = 0; i < n; i ++) {
    cin >> a[i];
    b[i % l].push_back(a[i]);
  }
  vector<vector<int>> cost(l, vector<int>(m));
  for (int i = 0; i < l; i ++) {
    for (int j = 0; j < m; j ++) {
      for (auto x : b[i]) {
        if (x <= j) cost[i][j] += j - x;
        else cost[i][j] += j + m - x;
      }
    }
  }

  vector<vector<int>> dp(l, vector<int>(m, INT_MAX));
  for (int i = 0; i < m; i ++) {
    dp[0][i] = cost[0][i];
  }
  for (int i = 0; i < l - 1; i ++) {
    for (int j = 0; j < m; j ++) {
      for (int k = 0; k < m; k ++) {
        int nxt = (j + k) % m;
        dp[i + 1][nxt] = min(dp[i + 1][nxt], dp[i][j] + cost[i + 1][k]);
      }
    }
  }
  cout << dp[l - 1][0] << endl;
}